1.2 函数与模块
🎯 学习目标
通过单位转换器项目,掌握Python函数和模块的使用
📝 项目预览:单位转换器
我们将创建一个多功能单位转换器,通过这个项目学习:
- 函数的定义和调用
- 参数传递和返回值
- 模块的导入和使用
- 菜单界面设计
- 程序结构组织
1. 函数基础
什么是函数?
函数就像是一个工具包,把相关的代码打包在一起,可以重复使用。
定义函数
使用 def 关键字定义函数:
# 定义一个简单的函数
def say_hello():
"""这是一个打招呼的函数"""
print("你好!")
print("欢迎学习Python!")
# 调用函数
say_hello() # 输出两行问候语带参数的函数
函数可以接收输入(参数),就像计算器需要输入数字一样:
# 带参数的函数
def greet(name):
"""向指定的人打招呼"""
print(f"你好,{name}!")
# 调用函数并传入参数
greet("小明") # 输出:你好,小明!
greet("小红") # 输出:你好,小红!有返回值的函数
函数可以返回结果,就像计算器返回计算结果:
# 有返回值的函数
def add_numbers(a, b):
"""计算两个数的和"""
result = a + b
return result # 返回计算结果
# 调用函数并使用返回值
sum_result = add_numbers(5, 3)
print("5 + 3 =", sum_result) # 输出:5 + 3 = 82. 单位转换器中的函数
温度转换函数
def celsius_to_fahrenheit(celsius):
"""将摄氏度转换为华氏度"""
fahrenheit = celsius * 9/5 + 32
return fahrenheit
def fahrenheit_to_celsius(fahrenheit):
"""将华氏度转换为摄氏度"""
celsius = (fahrenheit - 32) * 5/9
return celsius
# 使用示例
c_temp = 25
f_temp = celsius_to_fahrenheit(c_temp)
print(f"{c_temp}°C = {f_temp:.1f}°F") # 输出:25°C = 77.0°F长度转换函数
def meters_to_feet(meters):
"""将米转换为英尺"""
feet = meters * 3.28084
return feet
def feet_to_meters(feet):
"""将英尺转换为米"""
meters = feet / 3.28084
return meters
# 使用示例
m_length = 2
ft_length = meters_to_feet(m_length)
print(f"{m_length}米 = {ft_length:.2f}英尺") # 输出:2米 = 6.56英尺3. 模块的使用
什么是模块?
模块就像是工具箱,里面包含了很多有用的函数和工具。
导入模块
使用 import 关键字导入模块:
# 导入math模块
import math
# 使用模块中的函数
print("圆周率:", math.pi) # 3.141592653589793
print("2的平方根:", math.sqrt(2)) # 1.4142135623730951
print("5的阶乘:", math.factorial(5)) # 120常用的内置模块
| 模块名 | 用途 | 常用函数 |
|---|---|---|
math |
数学运算 | sqrt(), pi, sin(), cos() |
random |
随机数 | randint(), choice(), shuffle() |
datetime |
日期时间 | now(), date(), time() |
os |
操作系统 | getcwd(), listdir(), path.exists() |
模块别名
可以给模块起一个简短的名字:
import math as m
import datetime as dt
print(m.pi) # 使用别名
print(dt.datetime.now()) # 当前时间4. 菜单界面设计
功能菜单函数
def temperature_converter():
"""温度转换菜单"""
print("\n=== 温度转换 ===")
print("1. 摄氏度 → 华氏度")
print("2. 华氏度 → 摄氏度")
choice = input("请选择转换类型 (1-2): ")
if choice == '1':
celsius = float(input("请输入摄氏度: "))
result = celsius_to_fahrenheit(celsius)
print(f"{celsius}°C = {result:.2f}°F")
elif choice == '2':
fahrenheit = float(input("请输入华氏度: "))
result = fahrenheit_to_celsius(fahrenheit)
print(f"{fahrenheit}°F = {result:.2f}°C")
else:
print("无效选择!")主菜单函数
def main_menu():
"""主菜单"""
while True:
print("\n请选择转换类型:")
print("1. 温度转换")
print("2. 长度转换")
print("3. 退出")
choice = input("请输入选择 (1-3): ")
if choice == '1':
temperature_converter()
elif choice == '2':
length_converter()
elif choice == '3':
print("感谢使用,再见!")
break
else:
print("无效选择,请重新输入!")5. 程序结构组织
完整的程序结构
一个好的程序应该这样组织:
# 1. 导入模块
import math
import datetime
# 2. 定义转换函数
def celsius_to_fahrenheit(celsius):
"""摄氏度转华氏度"""
return celsius * 9/5 + 32
# 3. 定义菜单函数
def temperature_menu():
"""温度转换菜单"""
# 菜单逻辑...
# 4. 主函数
def main():
"""主程序"""
print("=== 单位转换器 ===")
main_menu()
# 5. 程序入口
if __name__ == "__main__":
main()if __name__ == "__main__": 的作用
这个条件判断确保:
- 当直接运行这个文件时,执行
main()函数 - 当这个文件被其他文件导入时,不执行
main()函数
6. 错误处理
输入验证
def get_valid_number(prompt):
"""获取有效的数字输入"""
while True:
try:
number = float(input(prompt))
return number
except ValueError:
print("错误:请输入有效的数字!")
# 使用示例
celsius = get_valid_number("请输入摄氏度: ")完整的转换函数
def safe_conversion():
"""安全的转换函数,包含错误处理"""
try:
celsius = float(input("请输入摄氏度: "))
fahrenheit = celsius_to_fahrenheit(celsius)
print(f"{celsius}°C = {fahrenheit:.2f}°F")
except ValueError:
print("错误:请输入有效的数字!")
except Exception as e:
print(f"发生错误: {e}")📋 单位转换器完整代码解析
让我们看看项目中的关键代码结构:
import math
import datetime
# 转换函数定义
def celsius_to_fahrenheit(celsius):
"""将摄氏度转换为华氏度"""
fahrenheit = celsius * 9/5 + 32
return fahrenheit
# 菜单函数定义
def temperature_converter():
"""温度转换菜单"""
print("\n=== 温度转换 ===")
print("1. 摄氏度 → 华氏度")
print("2. 华氏度 → 摄氏度")
choice = input("请选择转换类型 (1-2): ")
if choice == '1':
celsius = float(input("请输入摄氏度: "))
result = celsius_to_fahrenheit(celsius)
print(f"{celsius}°C = {result:.2f}°F")
# ... 其他逻辑
# 主函数
def main():
"""主程序"""
print("=== 多功能单位转换器 ===")
while True:
print("\n请选择转换类型:")
print("1. 温度转换")
print("2. 长度转换")
print("3. 退出")
choice = input("请输入选择 (1-3): ")
if choice == '1':
temperature_converter()
elif choice == '2':
length_converter()
elif choice == '3':
print("感谢使用单位转换器,再见!")
break
else:
print("无效选择,请重新输入!")
# 程序入口
if __name__ == "__main__":
main()🎯 学习要点总结
- 函数定义:使用
def 函数名(参数):定义函数 - 参数传递:函数可以接收输入参数
- 返回值:使用
return返回计算结果 - 模块导入:使用
import导入内置模块 - 程序结构:合理的函数划分和程序组织
- 菜单设计:用户友好的交互界面
- 错误处理:输入验证和异常处理
- 程序入口:
if __name__ == "__main__":的作用
💡 练习建议
- 运行代码:打开
code/第一阶段/1.2_单位转换器.py体验功能 - 添加功能:尝试添加新的转换类型(如重量、体积)
- 修改函数:改进现有的转换函数,增加错误处理
- 模块探索:尝试使用其他内置模块的功能
- 代码重构:将长函数拆分成更小的函数
🚀 函数编程的优势
- 代码重用:一次编写,多次使用
- 易于维护:修改一个函数,所有使用的地方都生效
- 模块化设计:大问题分解成小问题
- 团队协作:不同的人可以负责不同的函数
🚀 下一步
完成这个项目后,你将掌握函数和模块的使用,可以继续学习:
- 1.3 个人日记本:学习文件操作和更复杂的程序结构
- 第二阶段:数据处理与分析,使用NumPy和Pandas
记住:函数是编程的基础,好的函数设计能让代码更清晰、更易维护!
学习愉快!多写函数,多练习模块的使用!